package com.panfeng.xcloud.boss.provider.member.dao.mapper;

import com.panfeng.xcloud.boss.provider.member.dto.response.QueryFriendListRespDTO;
import com.panfeng.xcloud.boss.provider.member.dto.response.QueryRankingListRespDTO;
import com.panfeng.xcloud.boss.provider.member.model.WalletInfo;
import com.panfeng.xcloud.dao.member.entity.UserBase;
import com.panfeng.xcloud.dao.member.entity.UserPwd;
import com.panfeng.xcloud.dao.member.mapper.UserBaseMapper;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;

public interface UserBaseMapperExt extends UserBaseMapper {

    UserPwd selectLoginPwdByAccount(String userName);

    UserBase selectByLoginAccount(@Param("userName") String userName);

    int updateLastLogonTime(String userId);

    UserBase queryUserInfoByPhone(@Param("mobileNo") String mobileNo);

    /* 新增 mapper映射begin */
    String queryLatestUserId(String userType);

    UserBase selectByParameter(UserBase record);

    int queryCountByMobile(UserBase record);

    UserBase queryUserByAcct(UserBase record);

    UserBase queryUserInfo(String userId);

    int updateMobileEmail(@Param("userId")String userId, @Param("mobile")String mobile, @Param("email")String email);

    int updateGoogleVerifierFlag(String userId);

    int updateGoogleVerifierKey(@Param("userId")String userId, @Param("googleVerifierKey")String googleVerifierKey);

    String queryGoogleVerifierKey(String userId);

    int updateBasicInfo(@Param("userId")String userId, @Param("nickname")String nickname, @Param("profile")String profile);

    int updateHeadImg(@Param("userId")String userId, @Param("avatar")String avatar);

    Integer queryUserRegisterRank(String userId);

    Integer queryUserNickname(@Param("nickname")String nickname, @Param("userId")String userId);

    Integer queryUserScore(String userId);
    /* 新增 mapper映射end */

    List<QueryFriendListRespDTO> findFriendList(@Param("userId")String userId, @Param("mobileOrEmail")String mobileOrEmail);

    List<QueryRankingListRespDTO> findRankingList(String userId);

    QueryRankingListRespDTO findMyRanking(String userId);

    UserBase queryNotStatusUserInfoByUserId(@Param("userId")String userId);

    BigDecimal selectXDCNumberByUserId(String senderUserId);

    UserBase selectByLoginAccountExt(String userName);

    UserBase selectByLoginAccountExt2(String userName);

    void updateStatusByUserId(@Param("userId") String userId, @Param("status") Integer status);

    UserBase queryUserInfoExt(String userId);

    WalletInfo queryWalletInfo(String userId);
}
